﻿using AccesoDatos.Modulos.ClasesAccesoDatos;
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Logica.Modulos.ClasesLogica

{
    public class LOG_BaseDatos : Negocio
    {
        public void CRE_BaseDatos(MOD_BaseDatos obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                objBD.CRE_BaseDatos(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        public String GET_Direccion(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                String valor = objBD.GET_StringConexion(this.comando,codigo);

                this.CerrarConexion();

                return valor;

            }
            catch (Exception exc)
            {
                this.CerrarConexion(); 
                throw exc;
            }
        }


        public String GET_PASSWORD(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                String valor = objBD.GET_PasswordConexion(this.comando, codigo);

                this.CerrarConexion();

                valor = Operaciones.Desencriptar(valor);

                return valor;

            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        public void DEL_BaseDatos(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                objBD.DEL_BaseDatos(this.comando, codigo);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        //Actualiza BaseDatos
        /// <summary>
        /// Ups the d_ BaseDatos.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void UPD_BaseDatos(MOD_BaseDatos obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                objBD.UPD_BaseDatos(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }

        }

        //consultar grid BaseDatos

        /// <summary>
        /// Ses the l_ grid_ BaseDatos.
        /// </summary>
        /// <returns>List{MOD_BaseDatos}.</returns>
        public List<MOD_BaseDatos> SEL_Grid_BaseDatos()
        {
            try
            {
                this.AbrirConexion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                List<MOD_BaseDatos> lista = objBD.SEL_Grid_BaseDatos(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        //Seleccionar BaseDatos by id
        /// <summary>
        /// Ses the l_ BaseDatos by identifier.
        /// </summary>
        /// <param name="PUE_CODBaseDatos">The pu e_ cod BaseDatos.</param>
        /// <returns>MOD_BaseDatos.</returns>
        public MOD_BaseDatos SEL_BaseDatosByID(int PUE_CODBaseDatos)
        {
            try
            {
                this.AbrirConexion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                MOD_BaseDatos objBaseDatos = objBD.SEL_BaseDatosByID(this.comando, PUE_CODBaseDatos);

                this.CerrarConexion();

                return objBaseDatos;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        //Seleccionar BaseDatos by BaseDatos ,verifiaca que al crear un cliente no esté repetido
        /// <summary>
        /// Ses the l_ BaseDatos by BaseDatos.
        /// </summary>
        /// <param name="PUE_NOMBRE">The pu e_ nombre.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_BaseDatosByBaseDatos(string BaseDatos_NOMBRE)
        {
            try
            {
                this.AbrirConexion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                int cant_cli = objBD.SEL_BaseDatosByNombre(this.comando, BaseDatos_NOMBRE);

                this.CerrarConexion();

                return cant_cli;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }


        public List<MOD_BaseDatos> SEL_BASEDATOS()
        {
            try
            {
                this.AbrirConexion();

                AD_BaseDatos objBD = new AD_BaseDatos();

                List<MOD_BaseDatos> lista = objBD.SEL_BASEDATOS(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }
    }
}
